home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Rectangle;
- import java.awt.Shape;
- import javax.swing.event.DocumentEvent;
- import javax.swing.event.DocumentEvent.EventType;
- import javax.swing.text.Position.Bias;
-
- public abstract class CompositeView extends View {
- private static View[] ZERO = new View[0];
- private View[] children = new View[1];
- private int nchildren = 0;
- private short left;
- private short right;
- private short top;
- private short bottom;
- private Rectangle childAlloc = new Rectangle();
-
- public CompositeView(Element var1) {
- super(var1);
- }
-
- public void append(View var1) {
- View[] var2 = new View[]{var1};
- this.replace(this.nchildren, 0, var2);
- }
-
- public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- Element var4 = ((View)this).getElement();
- DocumentEvent.ElementChange var5 = var1.getChange(var4);
- if (var5 != null && !this.updateChildren(var5, var1, var3)) {
- var5 = null;
- }
-
- this.forwardUpdate(var5, var1, var2, var3);
- this.updateLayout(var5, var1, var2);
- }
-
- protected abstract void childAllocation(int var1, Rectangle var2);
-
- protected boolean flipEastAndWestAtEnds(int var1, Position.Bias var2) {
- return false;
- }
-
- void forwardUpdate(DocumentEvent.ElementChange var1, DocumentEvent var2, Shape var3, ViewFactory var4) {
- Element var5 = ((View)this).getElement();
- int var6 = var2.getOffset();
- int var7 = this.getViewIndexAtPosition(var6);
- int var8 = var7;
- View var9 = var7 >= 0 ? this.getView(var7) : null;
- if (var9 != null && var9.getStartOffset() == var6 && var6 > 0) {
- var7 = Math.max(var7 - 1, 0);
- }
-
- if (var2.getType() != EventType.REMOVE) {
- var8 = this.getViewIndexAtPosition(var6 + var2.getLength());
- if (var8 < 0) {
- var8 = this.getViewCount() - 1;
- }
- }
-
- int var10 = var8 + 1;
- int var11 = var10;
- Element[] var12 = var1 != null ? var1.getChildrenAdded() : null;
- if (var12 != null && var12.length > 0) {
- var10 = var1.getIndex();
- var11 = var10 + var12.length - 1;
- }
-
- for(int var13 = var7; var13 <= var8; ++var13) {
- if (var13 < var10 || var13 > var11) {
- var9 = this.getView(var13);
- if (var9 != null) {
- Shape var14 = this.getChildAllocation(var13, var3);
- this.forwardUpdateToView(var9, var2, var14, var4);
- }
- }
- }
-
- }
-
- void forwardUpdateToView(View var1, DocumentEvent var2, Shape var3, ViewFactory var4) {
- DocumentEvent.EventType var5 = var2.getType();
- if (var5 == EventType.INSERT) {
- var1.insertUpdate(var2, var3, var4);
- } else if (var5 == EventType.REMOVE) {
- var1.removeUpdate(var2, var3, var4);
- } else {
- var1.changedUpdate(var2, var3, var4);
- }
-
- }
-
- protected final short getBottomInset() {
- return this.bottom;
- }
-
- public Shape getChildAllocation(int var1, Shape var2) {
- Rectangle var3 = this.getInsideAllocation(var2);
- this.childAllocation(var1, var3);
- return var3;
- }
-
- protected Rectangle getInsideAllocation(Shape var1) {
- if (var1 != null) {
- Rectangle var2;
- if (var1 instanceof Rectangle) {
- var2 = (Rectangle)var1;
- } else {
- var2 = var1.getBounds();
- }
-
- this.childAlloc.setBounds(var2);
- Rectangle var10000 = this.childAlloc;
- var10000.x += this.left;
- var10000 = this.childAlloc;
- var10000.y += this.top;
- var10000 = this.childAlloc;
- var10000.width -= this.left + this.right;
- var10000 = this.childAlloc;
- var10000.height -= this.top + this.bottom;
- return this.childAlloc;
- } else {
- return null;
- }
- }
-
- protected final short getLeftInset() {
- return this.left;
- }
-
- protected int getNextEastWestVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
- boolean var6 = var4 == 3;
- Rectangle var7 = this.getInsideAllocation(var3);
- int var9 = var6 ? 1 : -1;
- int var8;
- if (var1 == -1) {
- View var10 = var6 ? this.getView(0) : this.getView(this.getViewCount() - 1);
- this.childAllocation(0, var7);
- var8 = var10.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
- if (var8 == -1 && var6 && this.getViewCount() > 1) {
- var10 = this.getView(1);
- var7 = this.getInsideAllocation(var3);
- this.childAllocation(1, var7);
- var8 = var10.getNextVisualPositionFrom(-1, var5[0], var7, var4, var5);
- }
- } else {
- int var19;
- if (var2 == Bias.Backward) {
- var19 = this.getViewIndexAtPosition(Math.max(((View)this).getStartOffset(), var1 - 1));
- } else {
- var19 = this.getViewIndexAtPosition(var1);
- }
-
- View var11 = this.getView(var19);
- this.childAllocation(var19, var7);
- var8 = var11.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
- if (var8 == -1) {
- if (this.flipEastAndWestAtEnds(var1, var2)) {
- var9 *= -1;
- }
-
- var19 += var9;
- if (var19 >= 0 && var19 < this.getViewCount()) {
- var11 = this.getView(var19);
- var7 = this.getInsideAllocation(var3);
- this.childAllocation(var19, var7);
- var8 = var11.getNextVisualPositionFrom(-1, var2, var7, var4, var5);
- if (var8 == var1 && var8 != -1 && var5[0] != var2) {
- var7 = this.getInsideAllocation(var3);
- this.childAllocation(var19, var7);
- var8 = var11.getNextVisualPositionFrom(var8, var5[0], var7, var4, var5);
- }
- }
- } else {
- if (this.flipEastAndWestAtEnds(var1, var2)) {
- var9 *= -1;
- }
-
- var19 += var9;
- if (var5[0] != var2 && (var9 == 1 && var11.getEndOffset() == var8 || var9 == -1 && var11.getStartOffset() == var8) && var19 >= 0 && var19 < this.getViewCount()) {
- var11 = this.getView(var19);
- var7 = this.getInsideAllocation(var3);
- this.childAllocation(var19, var7);
- Position.Bias var12 = var5[0];
- int var13 = var11.getNextVisualPositionFrom(-1, var2, var7, var4, var5);
- if (var5[0] == var2) {
- var8 = var13;
- } else {
- var5[0] = var12;
- }
- }
- }
- }
-
- return var8;
- }
-
- protected int getNextNorthSouthVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
- if (this.getViewCount() == 0) {
- return var1;
- } else {
- boolean var6 = var4 == 1;
- Rectangle var7 = this.getInsideAllocation(var3);
- int var8;
- if (var1 == -1) {
- View var9 = var6 ? this.getView(this.getViewCount() - 1) : this.getView(0);
- this.childAllocation(0, var7);
- var8 = var9.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
- } else {
- int var12;
- if (var2 == Bias.Backward && var1 > 0) {
- var12 = this.getViewIndexAtPosition(var1 - 1);
- } else {
- var12 = this.getViewIndexAtPosition(var1);
- }
-
- View var10 = this.getView(var12);
- this.childAllocation(var12, var7);
- var8 = var10.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
- if (var8 == -1) {
- label49: {
- if (var6) {
- --var12;
- if (var12 >= 0) {
- break label49;
- }
- }
-
- if (var6) {
- return var8;
- }
-
- ++var12;
- if (var12 >= this.getViewCount()) {
- return var8;
- }
- }
-
- var10 = this.getView(var12);
- var7 = this.getInsideAllocation(var3);
- this.childAllocation(var12, var7);
- var8 = var10.getNextVisualPositionFrom(-1, var2, var7, var4, var5);
- }
- }
-
- return var8;
- }
- }
-
- public int getNextVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
- this.getInsideAllocation(var3);
- switch (var4) {
- case 1:
- return this.getNextNorthSouthVisualPositionFrom(var1, var2, var3, var4, var5);
- case 2:
- case 4:
- case 6:
- default:
- throw new IllegalArgumentException("Bad direction: " + var4);
- case 3:
- return this.getNextEastWestVisualPositionFrom(var1, var2, var3, var4, var5);
- case 5:
- return this.getNextNorthSouthVisualPositionFrom(var1, var2, var3, var4, var5);
- case 7:
- return this.getNextEastWestVisualPositionFrom(var1, var2, var3, var4, var5);
- }
- }
-
- protected final short getRightInset() {
- return this.right;
- }
-
- protected final short getTopInset() {
- return this.top;
- }
-
- public View getView(int var1) {
- return this.children[var1];
- }
-
- protected abstract View getViewAtPoint(int var1, int var2, Rectangle var3);
-
- protected View getViewAtPosition(int var1, Rectangle var2) {
- Element var3 = ((View)this).getElement();
- int var4 = var3.getElementIndex(var1);
- Element var5 = var3.getElement(var4);
- if (var5 != null && var4 < this.getViewCount()) {
- View var6 = this.getView(var4);
- if (var6.getElement() == var5) {
- if (var2 != null) {
- this.childAllocation(var4, var2);
- }
-
- return var6;
- }
- }
-
- return null;
- }
-
- public int getViewCount() {
- return this.nchildren;
- }
-
- protected int getViewIndexAtPosition(int var1) {
- Element var2 = ((View)this).getElement();
- return var2.getElementIndex(var1);
- }
-
- public void insert(int var1, View var2) {
- View[] var3 = new View[]{var2};
- this.replace(var1, 0, var3);
- }
-
- public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- Element var4 = ((View)this).getElement();
- DocumentEvent.ElementChange var5 = var1.getChange(var4);
- if (var5 != null && !this.updateChildren(var5, var1, var3)) {
- var5 = null;
- }
-
- this.forwardUpdate(var5, var1, var2, var3);
- this.updateLayout(var5, var1, var2);
- }
-
- protected abstract boolean isAfter(int var1, int var2, Rectangle var3);
-
- protected abstract boolean isBefore(int var1, int var2, Rectangle var3);
-
- protected void loadChildren(ViewFactory var1) {
- Element var2 = ((View)this).getElement();
- int var3 = var2.getElementCount();
- if (var3 > 0) {
- View[] var4 = new View[var3];
-
- for(int var5 = 0; var5 < var3; ++var5) {
- var4[var5] = var1.create(var2.getElement(var5));
- }
-
- this.replace(0, 0, var4);
- }
-
- }
-
- public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException {
- boolean var4 = var3 == Bias.Backward;
- int var5 = var4 ? Math.max(0, var1 - 1) : var1;
- if (var4 && var5 < ((View)this).getStartOffset()) {
- return null;
- } else {
- int var6 = this.getViewIndexAtPosition(var5);
- if (var6 != -1 && var6 < this.getViewCount()) {
- View var7 = this.getView(var6);
- if (var7 != null && var5 >= var7.getStartOffset() && var5 < var7.getEndOffset()) {
- Shape var8 = var7.modelToView(var1, this.getChildAllocation(var6, var2), var3);
- if (var8 == null && var7.getEndOffset() == var1) {
- ++var6;
- if (var6 < this.getViewCount()) {
- var7 = this.getView(var6);
- var8 = var7.modelToView(var1, this.getChildAllocation(var6, var2), var3);
- }
- }
-
- return var8;
- }
- }
-
- throw new BadLocationException("Position not represented by view", var1);
- }
- }
-
- public Shape modelToView(int var1, Position.Bias var2, int var3, Position.Bias var4, Shape var5) throws BadLocationException {
- if (var1 == ((View)this).getStartOffset() && var3 == ((View)this).getEndOffset()) {
- return var5;
- } else {
- Rectangle var6 = this.getInsideAllocation(var5);
- Rectangle var7 = new Rectangle(var6);
- View var8 = this.getViewAtPosition(var2 == Bias.Backward ? Math.max(0, var1 - 1) : var1, var7);
- Rectangle var9 = new Rectangle(var6);
- View var10 = this.getViewAtPosition(var4 == Bias.Backward ? Math.max(0, var3 - 1) : var3, var9);
- if (var8 == var10) {
- return var8 == null ? var5 : var8.modelToView(var1, var2, var3, var4, var7);
- } else {
- int var11 = this.getViewCount();
-
- for(int var12 = 0; var12 < var11; ++var12) {
- View var13;
- if ((var13 = this.getView(var12)) == var8 || var13 == var10) {
- Rectangle var16 = new Rectangle();
- View var14;
- Rectangle var15;
- if (var13 == var8) {
- var15 = var8.modelToView(var1, var2, var8.getEndOffset(), Bias.Backward, var7).getBounds();
- var14 = var10;
- } else {
- var15 = var10.modelToView(var10.getStartOffset(), Bias.Forward, var3, var4, var9).getBounds();
- var14 = var8;
- }
-
- while(true) {
- ++var12;
- if (var12 >= var11 || this.getView(var12) == var14) {
- if (var14 != null) {
- Shape var17;
- if (var14 == var10) {
- var17 = var10.modelToView(var10.getStartOffset(), Bias.Forward, var3, var4, var9);
- } else {
- var17 = var8.modelToView(var1, var2, var8.getEndOffset(), Bias.Backward, var7);
- }
-
- if (var17 instanceof Rectangle) {
- var15.add((Rectangle)var17);
- } else {
- var15.add(var17.getBounds());
- }
- }
-
- return var15;
- }
-
- var16.setBounds(var6);
- this.childAllocation(var12, var16);
- var15.add(var16);
- }
- }
- }
-
- throw new BadLocationException("Position not represented by view", var1);
- }
- }
- }
-
- void remove(int var1) {
- this.replace(var1, 1, ZERO);
- }
-
- public void removeAll() {
- this.replace(0, this.nchildren, ZERO);
- }
-
- public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- Element var4 = ((View)this).getElement();
- DocumentEvent.ElementChange var5 = var1.getChange(var4);
- if (var5 != null && !this.updateChildren(var5, var1, var3)) {
- var5 = null;
- }
-
- this.forwardUpdate(var5, var1, var2, var3);
- this.updateLayout(var5, var1, var2);
- }
-
- public void replace(int var1, int var2, View[] var3) {
- for(int var4 = var1; var4 < var1 + var2; ++var4) {
- this.children[var4].setParent((View)null);
- this.children[var4] = null;
- }
-
- int var5 = var3.length - var2;
- int var6 = var1 + var2;
- int var7 = this.nchildren - var6;
- int var8 = var6 + var5;
- if (this.nchildren + var5 >= this.children.length) {
- int var9 = Math.max(2 * this.children.length, this.nchildren + var5);
- View[] var10 = new View[var9];
- System.arraycopy(this.children, 0, var10, 0, var1);
- System.arraycopy(var3, 0, var10, var1, var3.length);
- System.arraycopy(this.children, var6, var10, var8, var7);
- this.children = var10;
- } else {
- System.arraycopy(this.children, var6, this.children, var8, var7);
- System.arraycopy(var3, 0, this.children, var1, var3.length);
- }
-
- this.nchildren += var5;
-
- for(int var11 = 0; var11 < var3.length; ++var11) {
- var3[var11].setParent(this);
- }
-
- }
-
- protected final void setInsets(short var1, short var2, short var3, short var4) {
- this.top = var1;
- this.left = var2;
- this.right = var4;
- this.bottom = var3;
- }
-
- protected final void setParagraphInsets(AttributeSet var1) {
- this.top = (short)((int)StyleConstants.getSpaceAbove(var1));
- this.left = (short)((int)StyleConstants.getLeftIndent(var1));
- this.bottom = (short)((int)StyleConstants.getSpaceBelow(var1));
- this.right = (short)((int)StyleConstants.getRightIndent(var1));
- }
-
- public void setParent(View var1) {
- super.setParent(var1);
- if (var1 != null && this.nchildren == 0) {
- ViewFactory var2 = ((View)this).getViewFactory();
- this.loadChildren(var2);
- }
-
- }
-
- boolean updateChildren(DocumentEvent.ElementChange var1, DocumentEvent var2, ViewFactory var3) {
- Element[] var4 = var1.getChildrenRemoved();
- Element[] var5 = var1.getChildrenAdded();
- View[] var6 = new View[var5.length];
-
- for(int var7 = 0; var7 < var5.length; ++var7) {
- var6[var7] = var3.create(var5[var7]);
- }
-
- int var8 = var1.getIndex();
- this.replace(var8, var4.length, var6);
- return true;
- }
-
- void updateLayout(DocumentEvent.ElementChange var1, DocumentEvent var2, Shape var3) {
- if (var1 != null && var3 != null) {
- ((View)this).preferenceChanged((View)null, true, true);
- ((View)this).getContainer().repaint();
- }
-
- }
-
- public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) {
- Rectangle var5 = this.getInsideAllocation(var3);
- if (this.isBefore((int)var1, (int)var2, var5)) {
- int var12 = -1;
-
- try {
- var12 = this.getNextVisualPositionFrom(-1, Bias.Forward, var3, 3, var4);
- } catch (BadLocationException var7) {
- } catch (IllegalArgumentException var8) {
- }
-
- if (var12 == -1) {
- var12 = ((View)this).getStartOffset();
- var4[0] = Bias.Forward;
- }
-
- return var12;
- } else if (this.isAfter((int)var1, (int)var2, var5)) {
- int var11 = -1;
-
- try {
- var11 = this.getNextVisualPositionFrom(-1, Bias.Forward, var3, 7, var4);
- } catch (BadLocationException var9) {
- } catch (IllegalArgumentException var10) {
- }
-
- if (var11 == -1) {
- var11 = ((View)this).getEndOffset() - 1;
- var4[0] = Bias.Forward;
- }
-
- return var11;
- } else {
- View var6 = this.getViewAtPoint((int)var1, (int)var2, var5);
- return var6 != null ? var6.viewToModel(var1, var2, var5, var4) : -1;
- }
- }
- }
-